//package com.ruoyi.system.condig;
//
//import org.apache.ibatis.session.SqlSessionFactory;
//import org.mybatis.spring.SqlSessionFactoryBean;
//import org.mybatis.spring.annotation.MapperScan;
//import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//
//import javax.sql.DataSource;
//
///**
// * MyBatis 配置，注册拦截器并扫描 Mapper
// */
//@Configuration
//@MapperScan("com.ruoyi.system.mapper") // 替换为你的 Mapper 接口包路径
//public class MyBatisConfig {
//    /**
//     * 注册 SQL 拦截器到 SqlSessionFactory
//     */
//    @Bean
//    public SqlSessionFactory sqlSessionFactory( MybatisProperties mybatisProperties,DataSource dataSource, SqlMethodAssociateInterceptor sqlInterceptor) throws Exception {
//        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
//        // 1. 设置数据源（已从 Nacos 配置中注入）
//        sessionFactory.setDataSource(dataSource);
//        // 2. 加载 Nacos 中配置的 mapper 映射文件路径
//        if (mybatisProperties.getMapperLocations() != null && mybatisProperties.getMapperLocations().length > 0) {
//            sessionFactory.setMapperLocations(
//                    new PathMatchingResourcePatternResolver()
//                            .getResources(mybatisProperties.getMapperLocations()[0])
//            );
//        }
//        // 3. 加载 Nacos 中配置的 MyBatis 全局属性（如下划线转驼峰）
//        sessionFactory.setConfiguration(mybatisProperties.getConfiguration());
//
//        // 4. 加载 Nacos 中配置的类型别名包
//        if (mybatisProperties.getTypeAliasesPackage() != null) {
//            sessionFactory.setTypeAliasesPackage(mybatisProperties.getTypeAliasesPackage());
//        }
//
//        // 5. 若 Nacos 中配置了 mybatis-config.xml 路径，加载它
//        if (mybatisProperties.getConfigLocation() != null) {
//            sessionFactory.setConfigLocation(
//                    new PathMatchingResourcePatternResolver()
//                            .getResource(mybatisProperties.getConfigLocation())
//            );
//        }
//        /**
//         * 添加自定义拦截器
//         */
//        sessionFactory.setPlugins(sqlInterceptor);
//        return sessionFactory.getObject();
//    }
//}